import observe from './observe.js'           
export default function defineReactive(obj,key,value){
	console.log('我是defineReacytive函数：',key);
	if(arguments.length==2){
		value = obj[key];
	};
	//重要：当子元素形成observe时候，形成递归，这个递归不是自己调用自己，而是多个函数的循环调用
	let childrenOb = observe(value);
	Object.defineProperty(obj,key,{
		// 可枚举
		enumerable:true,
		// 可配置
		configurable:true,
		//getter
		get(){
			console.log('正在试图访问'+key+'属性');
			return value;
		},
		//setter
		set(newValue){
			console.log('正在试图设置'+key+'属性');
			if(value===newValue)return;
			value =newValue;
			//当设置新值时候，新值也需要被observe，因为新值可能也是对象
			childrenOb = observe(newValue)
			return true
		}
	})

}